# !/usr/bin/env python
# -*- coding: utf-8 -*-
import pexpect
import getpass, os


def ssh_command(user, host, password, command):
    ssh_newkey = 'Are you sure you want to continue connecting'
    child = pexpect.spawn('ssh -l %s %s %s' % (user, host, command))
    i = child.expect([pexpect.TIMEOUT, ssh_newkey, 'password: '])

    # 如果登录超时，打印出错信息，并退出.
    if i == 0:  # Timeout
        print
        'ERROR!'
        print
        'SSH could not login. Here is what SSH said:'
        print
        child.before, child.after
        return None

    # 如果 ssh 没有 public key，接受它.
    if i == 1:  # SSH does not have the public key. Just accept it.
        child.sendline('yes')
        child.expect('password: ')
        i = child.expect([pexpect.TIMEOUT, 'password: '])
        if i == 0:  # Timeout
            print
            'SSH could not login. Here is what SSH said:'
            print
            child.before, child.after
            return None
    child.sendline(password)
    return child


def main():
    host = raw_input('Hostname: ')
    user = raw_input('User: ')
    password = getpass.getpass()
    command = raw_input('Enter the command: ')
    child = ssh_command(user, host, password, command)
    child.expect(pexpect.EOF)
    print
    child.before

